/*
值类型  typeof

[] instanceof Object
实例 instanceof 构造函数

{}.props
[].methods

对象是通过函数创建的，函数也是一种对象
*/


// Object, Array, Date
function Car(uname) { // 面向对象编程，首字母大写，构造函数
	// console.log(this) this就是new出来的实例对象
	this.uname = uname
	this.age = 24
	// this.color = "#f00"
}

// 通过 prototype 添加属性和方法
Car.prototype.lunzi = "4个"
Car.prototype.color = "#000"
Car.prototype.runing = function() {
	console.log("runing !!!")
}

// Car.active = "active" // 看不见

const bmw = new Car("宝马")
console.log(bmw)

console.log(bmw.uname)
console.log(bmw.hasOwnProperty("uname")) // true
console.log(bmw.color)
console.log(bmw.hasOwnProperty("color")) // false
// console.log(bmw.toString())
// console.log(bmw.u)



/*
// prototype 就是实例的原型
// __proto__ 隐式原型
console.log(Car.prototype) // 
console.log(Car.prototype.constructor) // 指向该函数的本身

console.log(bmw.__proto__) // 指向函数的 prototype 属性

// console.log(Car.prototype === bmw.__proto__)
// console.log(bmw instanceof Car)
// console.log({} instanceof Car) // false
// console.log(bmw instanceof Object)
// console.log({} instanceof Array)


console.log("===============================")
console.log(Object.prototype.__proto__)
console.log(Array.prototype.__proto__)
// console.log(Object.prototype.constructor)
*/



/*



// function f1() {} // function
const f1 = []
// const f1 = {}

f1.a = "10"
f1.sayHi = function() {
	console.log("hi")
}

console.log(f1.a) // 10
f1.sayHi()
*/
















